#ifndef __CHANNEL_HPP__
#define __CHANNEL_HPP__

#include<iostream>
#include<string>
#include<unistd.h>

//对于子进程而言，只需要管理自己的一个读端就好了
//但是父进程有很多写端，对应不用的子进程，所以需要通过先描述，在组织的思想管理起来

class Channel
{
public:
    Channel(int wfd, pid_t who)
        :_wfd(wfd),
         _who(who)
    {
        _name = "Channel-" + std::to_string(wfd) + "-" + std::to_string(who);
    }

    std::string Name()
    {
        return _name;
    }

    void Send(int cmd) //向管道写入任务的编号
    {
        ::write(_wfd, &cmd, sizeof(cmd));
    }

    void Close()
    {
        ::close(_wfd);
    }

    pid_t Id()
    {
        return _who;
    }

    int wFd()
    {
        return _wfd;
    }

    ~Channel()
    {}

private:
    int _wfd;
    std::string _name; //给当前管道起个名字
    pid_t _who; //对应哪个子进程
};

#endif